package cn.rkylin.oms.push.adapter;

import java.util.Map;

import org.springframework.stereotype.Service;

import cn.rkylin.oms.system.shop.domain.Shop;

@Service("taobaoPushAdapter")
public class TaobaoPushAdapter extends PushAdapter {

    /**
     * 系统发货
     * 
     * @param shop
     *            网店对象
     * @param ecItemCode
     *            平台商品编码
     * @param ecTradeCode
     *            平台交易编码
     * @param ecSkuCode
     *            平台规格编码
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushSystemConsignment(Shop shop, String ecItemCode, String ecTradeCode, String ecSkuCode,
            String shipTime) {
        return this.getPushVisitor().pushSystemConsignment(shop, ecItemCode, ecTradeCode, ecSkuCode, shipTime);
    }

    /**
     * 自己联系物流（线下物流）发货
     * 
     * @param shop
     *            网店对象
     * @param ecTradeCode
     *            平台交易编码
     * @param lgstNo
     *            物流单号
     * @param lgstCode
     *            物流公司编码
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushTradeOfflineSend(Shop shop, String ecTradeCode, String lgstNo, String lgstCode) throws Exception {
        // 由于ecTradeCode是系统使用的，所以格式是ecTradeCode+“-”+时间，在向淘宝推送的时候，需要截串
        if (ecTradeCode != null) {
            ecTradeCode = ecTradeCode.split("-")[0];
        }
        return this.getPushVisitor().pushTradeOfflineSend(shop, ecTradeCode, lgstNo, lgstCode);
    }

    /**
     * 商品上架
     * 
     * @param shop
     *            网店对象
     * @param ecItemCode
     *            平台商品编码
     * @param stockCount
     *            库存数量
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushItemListing(Shop shop, String ecItemCode, String stockCount) throws Exception {
        return this.getPushVisitor().pushItemListing(shop, ecItemCode, stockCount);
    }

    /**
     * 商品下架
     * 
     * @param shop
     *            网店对象
     * @param ecItemCode
     *            平台商品编码
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushItemDeListing(Shop shop, String ecItemCode) throws Exception {
        return this.getPushVisitor().pushItemDeListing(shop, ecItemCode);
    }

    /**
     * 批量同意退款
     * 
     * @param shop
     *            网店对象
     * @param ecRefundCodes
     *            平台退款编号, 按照 ","号分割
     * @param code
     *            短信验证码
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushRefundBatchAgree(Shop shop, String ecRefundCodes, String code) {
        return this.getPushVisitor().pushRefundBatchAgree(shop, ecRefundCodes, code);
    }

    /**
     * 拒绝退款
     * 
     * @param shop
     *            网店对象
     * @param ecRefundCode
     *            平台退款编号
     * @param refuseMessage
     *            拒绝退款时的说明信息
     * @param refuseReasonId
     *            拒绝原因编号
     * @param refusePath
     *            拒绝退款时的退款凭证对应的本地绝对路径
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushRefundRefuse(Shop shop, String ecRefundCode, String refuseMessage, String refuseReasonId,
            String refusePath) {
        return this.getPushVisitor().pushRefundRefuse(shop, ecRefundCode, refuseMessage, refuseReasonId, refusePath);
    }

    /**
     * 卖家同意退货
     * 
     * @param shop
     *            网店对象
     * @param ecRefundCode
     *            平台退款编号
     * @param name
     *            卖家姓名
     * @param address
     *            卖家提供的退货地址
     * @param post
     *            卖家提供的退货地址的邮编
     * @param tel
     *            卖家座机
     * @param mobile
     *            卖家手机
     * @param remark
     *            卖家退货留言
     * @param sellerAddressId
     *            卖家收货地址编号
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushReturnGoodsAgree(Shop shop, String ecRefundCode, String name, String address, String post,
            String tel, String mobile, String remark, String sellerAddressId) {
        return this.getPushVisitor().pushReturnGoodsAgree(shop, ecRefundCode, name, address, post, tel, mobile, remark,
                sellerAddressId);
    }

    /**
     * 审核退款单
     * 
     * @param shop
     *            网店对象
     * @param ecRefundCode
     *            平台退款编号
     * @param erpStatus
     *            审核状态 已审核/未审核
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushRefundAppr(Shop shop, String ecRefundCode, String erpStatus) {
        return this.getPushVisitor().pushRefundAppr(shop, ecRefundCode, erpStatus);
    }

    /**
     * 宝贝/SKU库存修改(商品)
     * 
     * @param shop
     *            网店对象
     * @param ecItemCode
     *            平台退款编号
     * @param skuId
     *            规格id
     * @param stockCount
     *            库存数量
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushItemQuantityUpdate(Shop shop, String ecItemCode, String skuId, String stockCount) throws Exception {
        return this.getPushVisitor().pushItemQuantityUpdate(shop, ecItemCode, skuId, stockCount);
    }

    /**
     * 宝贝/SKU库存修改(SKU)
     * 
     * @param shop
     *            网店对象
     * @param ecItemCode
     *            平台退款编号
     * @param ecSkuCode
     *            平台规格编码
     * @param stockCount
     *            库存数量
     * @return 结果对象
     */
    @Override
    public Map<String, Object> pushSkuQuantityUpdate(Shop shop, String ecItemCode, String ecSkuCode, String stockCount) throws Exception {
        return this.getPushVisitor().pushSkuQuantityUpdate(shop, ecItemCode, ecSkuCode, stockCount);
    }

    /**
     * 修改一笔交易备注
     *
     * @param tid
     *            交易编号
     * @param memo
     *            备注
     * @param flag
     *            交易备注旗帜，可选值为：0(灰色), 1(红色), 2(黄色), 3(绿色), 4(蓝色), 5(粉红色)，默认值为0
     * @return
     * @throws Exception
     */
    @Override
    public Map<String, Object> pushTradeMemo(Shop shop, Long tid, String memo, Long flag) throws Exception {
        return this.getPushVisitor().pushTradeMemo(shop, tid, memo, flag);
    }

}
